package atech.ace.mapping;

import java.io.IOException;
import java.util.List;

import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

import atech.ace.mapping.persistence.entities.Company;

/**
 * Servlet implementation class CreateCompany
 */
@WebServlet("/CreateCompany")
public class CreateCompany extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@PersistenceContext(name = "jdbc/ACE_ProjectMapping")
	EntityManager em;

	@Resource
	UserTransaction utx;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		Company company = new Company();
		company.setName(request.getParameter("companyName"));
		
		String[] errs = Validation.validateCompany(company);
		if(errs.length > 0)
		{
			request.setAttribute("errs", errs);
			request.getRequestDispatcher("Create").forward(request, response);
		}
		else{
			try {
				utx.begin();
				em.persist(company);
				utx.commit();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				try {
					utx.rollback();
				} catch (IllegalStateException e1) {
					e1.printStackTrace();
				} catch (SecurityException e1) {
					e1.printStackTrace();
				} catch (SystemException e1) {
					e1.printStackTrace();
				}
			}
			
			response.sendRedirect("Create");
		}
	}

}
